package com.geek.novel.event

import android.os.Message

/**
 * 被观察者
 * 定义添加，删除，通知等方法
 */
open class SimpleEventObservable: EventObservable {

    /**事件对象*/
    private var observerList: ArrayList<EventObserver>? = null
    /**
     * 添加观察者
     */
    override fun addEventObserver(observer: EventObserver) {
        if(observerList == null){
            observerList = ArrayList()
        }
        if(!observerList!!.contains(observer)){
            observerList!!.add(observer)
        }
    }

    /**
     * 删除观察者
     */
    override fun removeEventObserver(observer: EventObserver) {
        if(observerList != null){
            observerList!!.remove(observer)
        }
    }

    /**
     * 通知单个观察者，后续需要通知全部再说
     */
    override fun notifyEvent(message: Message) {
        if(observerList != null){
            observerList!!.forEach{ item ->
                item.handleEvent(message)
            }
        }
    }

}